package org.grottarossa.template.data.pojo.table;

import java.util.ArrayList;

/**
 *
 * La Classe rappresenta l'oggetto header.
 *
 * @author Marco Sabatini (sabatini.m@gmail.com)
 * @author Maurizio Farina (maurizio.farina@gmail.com)
* @author Marco Trischitta (marco.trischitta@gmail.com)
 * @version %I%, %G%
 * @since 1.0
 *
 * */
public class Header
{
	/**E' l'arraylist di celle presenti nell'header.*/
	private ArrayList<Cell> headerCells;

	/**
	 * Il costruttore dell'header inizializza un' ArryList<Cell>.
	 * */
	public Header()
	{
		headerCells = new ArrayList<Cell>();
	}

	/**
	 * La funzione aggiunge un oggetto Cell alla lista di celle dell'header.
	 * @param cell E' l'oggettp Cell che si vuole inserire.
	 * */
	public void add(Cell cell)
	{
		headerCells.add(cell);
	}

	/**
	 * La funzione recupera la lista di celle dell'header.
	 * @return Un ArrayList<Cell> che rappresenta la lista di celle presenti nell'header.
	 * */
	public ArrayList<Cell> getHeaderCells()
	{
		return headerCells;
	}

	/**
	 * La funzione restituisce una determinata cella dell Record.
	 * @param sName E' il nome della cella che si vuole cercare.
	 * */
	public Cell get(String sName) {

		for ( int i=0; i<headerCells.size(); i++)
		{
			if ( headerCells.get(i).getValue().equals(sName) )
				return headerCells.get(i);
		}
		return null;
	}

	/**
	 * La funzione restituisce l'indice di una determinata cella dell Record.
	 * @param sName E' il nome della cella che si vuole cercare.
	 * */
	public int getCellIndex(String sName) {
		for ( int i=0; i<headerCells.size(); i++)
		{
			if ( ((String)headerCells.get(i).getValue()).equals(sName) )
				return i;
		}
		return -1;
	}

	public void addByEngine(Cell cell) {
		cell.setAddByEngine(true);
		headerCells.add(cell);
	}

	/**
	 *
	 * @return Il numero di celle escluse quelle aggiunte diinamicamente dal Driver.
	 */
	public int getHeaderSize() {
		int iCount = headerCells.size();
		for ( Cell cell: headerCells)
		{
			if ( cell.isAddByEngine() )
				iCount--;
		}
		return iCount;
	}
}
